package com.newcoder.huawei;

import java.util.Scanner;

/**
 * 请你实现一个链表。
 * 操作：
 * insert x y：将yy加入链表，插入在第一个值为xx的结点之前。若链表中不存在值为xx的结点，则插入在链表末尾。保证xx,yy为int型整数。
 * delete x：删除链表中第一个值为xx的结点。若不存在值为xx的结点，则不删除。
 */
public class AB9 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int actionSize = Integer.parseInt(scan.nextLine());//获取总的操作次数
        CustomLinkNode linkNode = new CustomLinkNode();
        while (scan.hasNextLine()) {//获取每一次操作
            String str = scan.nextLine();
            String arr[] = str.split(" ");
            if (arr[0].equals("insert")) {
                linkNode.insert(Integer.parseInt(arr[1]), Integer.parseInt(arr[2]));
            } else if (arr[0].equals("delete")) {
                linkNode.delete(Integer.parseInt(arr[1]));
            }
        }
        linkNode.display();
        scan.close();
    }
}

class CustomLinkNode {

    // 头节点
    ListNode head;

    // 链表的长度
    private int length;

    //创建一个单链表
    public CustomLinkNode(){
        this.length = 0;
        head = new ListNode();
    }

    //向链表中添加数据
    public void insert(int searchNodeV, int insertV) {
        //前指针
        ListNode front = this.head;
        //后指针
        ListNode tail = this.head.getNext();
        // 如果未找到值为value的节点就一直找，直到没有子节点
        while (tail != null && tail.getVal() != searchNodeV) {
            tail = front;
            front = front.getNext();
        }

        //链表中没有所查找的数据,新数据插入末尾
        if (tail == null) {
            front.setNext(new ListNode(insertV, null));
            this.length++;
        } else {//找到目标数据
            front.setNext(new ListNode(insertV, tail));
            this.length++;
        }
    }

    //删除链表中的数据
    public void delete(int searchNodeV) {
        if (isEmpty()) {
            return;
        }
        //前指针
        ListNode front = this.head;
        //后指针
        ListNode tail = this.head.getNext();
        // 如果未找到值为value的节点就一直找，直到没有子节点
        while (tail != null && tail.getVal() != searchNodeV) {
            tail = front;
            front = front.getNext();
        }
        if (tail == null) {//所要删除的数据不存在
            return;
        } else {//找到，删除
            front.setNext(tail.getNext());
            this.length--;
        }
    }

    //判空
    public boolean isEmpty() {
        if (this.length == 0) {
            return true;
        }
        return false;
    }

    public void addFirst(int data) {
        ListNode node = new ListNode(data);
        node.next = this.head;
        this.head = node;
    }

    public void addLast(int data) {
        ListNode node = new ListNode(data);
        if (this.head == null) {
            this.head = node;
        } else {
            ListNode cur = this.head;
            while (cur.next != null) {
                cur = cur.next;
            }
            cur.next = node;
        }
    }

    public void display() {

        if(isEmpty()){
            System.out.println("NULL");
            return;
        }

        ListNode cur = this.head;
        while (cur != null) {
            System.out.print(cur.val + " ");
            cur = cur.next;
        }
        System.out.println();
    }

}

